package com.qdxwx.data.mapper.card;

import com.qdxwx.common.page.PageRequest;
import com.qdxwx.models.card.CardCode;
import com.qdxwx.models.card.CardCodeQuery;
import com.qdxwx.models.card.CardCodeVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 *CardCode接口
 * Qdx NetSchool Platform
 * @author qdxwx
 * @updateTime 2022/5/25
 * @description
 */
@Repository
public interface CardCodeMapper {

    /**
     * 添加CardCode
     * @param cardCode 要添加的CardCode
     * @return id
     */
    int insert(CardCode cardCode);

    /**
     * 批量添加课程卡信息
     */
    int insertBatch(List<CardCode> cardCodeList);

    /**
     * 根据id删除一个CardCode
     * @param id 要删除的id
     */
    int deleteById(long id);

    /**
     * 修改CardCode
     * @param cardCode 要修改的CardCode
     */
    int update(CardCode cardCode);

    /**
     * 根据卡编码  修改   未使用  为  已使用  状态
     */
    int updateUsed(CardCode cardCode);

    /**
     * 修改课程卡状态
     */
    int overById(long id);

    int overByCardId(long cardId);

    int closeByCardId(long cardId);

    /**
     * 根据id获取单个CardCode对象
     * @param id 要查询的id
     * @return CardCode
     */
    CardCode selectById(long id);

    CardCode selectByCode(String code, String pwd);

    List<CardCodeVO> selectVOList(@Param("e") CardCodeQuery cardCodeQuery, @Param("page") PageRequest page);

    List<CardCode> selectList(@Param("e") CardCode cardCode, @Param("page") PageRequest page);

    long count(@Param("e") CardCode cardCode);

    int updateCombine(long userId1, long userId2);
}